﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using Bastanteo.Domain; 


namespace Bastanteo.Persistencia.ADO
{
    public class PoderDAO : IPoderesDAO
    {
        public Domain.Poder Crear(Domain.Poder entidad)
        {
            using (SqlConnection cn = new SqlConnection(Conexion.ObtenerCadena()))
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand("insert into Poderes values (@PoderesId, @PoderesDescripcion,@TipoServicio,@CodigoCorto,@TipoProducto)", cn);
                cmd.Parameters.AddWithValue("@PoderesId", entidad.PoderId);
                cmd.Parameters.AddWithValue("@PoderesDescripcion", entidad.PoderDescripcion);
                cmd.Parameters.AddWithValue("@TipoServicio", entidad.TipoServicio);
                cmd.Parameters.AddWithValue("@CodigoCorto", entidad.CodigoCorto);
                cmd.Parameters.AddWithValue("@TipoProducto", entidad.TipoProducto);

                cmd.ExecuteNonQuery();

              

            }

            return Obtener(entidad.PoderId); 
        }

        public Domain.Poder Obtener(string id)
        {
            Poder newPoder = null;

            using (SqlConnection cn = new SqlConnection(Conexion.ObtenerCadena()))
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand("Select * from Poderes where PoderesId=@PoderesId", cn);
                cmd.Parameters.AddWithValue("@PoderesId", id);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    newPoder = new Poder();
                    newPoder.PoderId = (string)reader["PoderesId"];
                    newPoder.PoderDescripcion = (string)reader["PoderesDescripcion"];
                    newPoder.TipoServicio = (int)reader["TipoServicio"];
                    newPoder.CodigoCorto = (string)reader["CodigoCorto"];
                    newPoder.TipoProducto = (string)reader["TipoProducto"];

                }

            }

            return newPoder;
        }

        public Domain.Poder Modificar(Domain.Poder entidad)
        {
            Poder poder = new Poder();

            using (SqlConnection cn = new SqlConnection(Conexion.ObtenerCadena()))
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand("update Poderes set  PoderesDescripcion=@PoderesDescripcion where PoderesId=@PoderesId", cn);
                cmd.Parameters.AddWithValue("@PoderesId", entidad.PoderId);
                cmd.Parameters.AddWithValue("@RolDescripcion", entidad.PoderDescripcion);
                cmd.ExecuteNonQuery();

                poder = Obtener(entidad.PoderId);
            }

            return poder; 
        }

        public void Eliminar(Domain.Poder entidad)
        {
            using (SqlConnection cn = new SqlConnection(Conexion.ObtenerCadena()))
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand("Delete from Poderes where PoderesId=@PoderesId",cn);
                cmd.Parameters.AddWithValue("@PoderesId", entidad.PoderId);
                cmd.ExecuteNonQuery();
            }
        }

        #region IbaseDao<Poder,string> Members
        public ICollection<Poder> Listar()  {
            throw new NotImplementedException();
        }
        #endregion
    }
}